perm filename DRAWS.F4[CMS,LCS] blob
sn#105204 filedate 1974-06-01 generic text, type T, neo UTF8
00100 DIMENSION II(1024),JJ(1024),KK(1024),LL(1024),KP(5),NN(4096)
00200 1,A(384),B(384),IB(1024)
00300 COMMON KP,NP,NN,JF
00400 IMP(I)=IABS(NN(I)/100000000)
00500 1 JE=0
00600 MN=0
00700 IP=-1
00800 MO=0
00900 NZ=10
01000 IM=0
01100 JF=0
01200 IS=-1
01300 NF=0
01400 LF=1
01500 CALL DPYCLR
01600 CALL TYPLOC(-350,-511)
01700 DO 407 I=1,4
01800 407 KP(I)=' '
01900 CALL DPYSET(4,LL,1000)
02000 CALL DPYSET(3,KK,1000)
02100 CALL DPYSET(2,JJ,1000)
02200 CALL DPYSET(1,II,1000)
02300 MN=0
02400 2 TYPE 5
02500 5 FORMAT(' TYPE:<CR>;TO DRAW NEW PICTURE.'/
02600 1' OR TYPE IN NAME TO USE OLD PICTURE.'/)
02700 ACCEPT 3,NAM
02800 3 FORMAT(A5)
02900 IF(NAM.EQ.' ')GO TO 140
03000 IF(.NOT.LOOKD(NAM))GO TO 2
03100 515 CALL IFILE(1,NAM)
03200 READ(1)LE,(NN(K),K=MN+1,MN+LE)
03300 MN=MN+LE
03400 IP=-1
03500 IF(MO.NE.'P')GO TO 517
03600 MO=100000000
03700 DO 518 K=MN-LE+1,MN
03800 MP=1
03900 IF(NN(K))MP=-1
04000 NN(K)=IABS(NN(K))
04100 518 NN(K)=MP*(NP*MO+(MOD(NN(K),MO)))
04200 GO TO 503
04300 517 DO 388 K=1,MN
04400 NP=MOD(IMP(K),10)
04500 CALL SETPOG(NP)
04600 CALL INXY(NX,NY,K)
04700 MP=1
04800 IF(NN(K))MP=-1
04900 388 CALL IPEN(NX,NY,MP,NZ)
05000 DO 193 I=1,4
05100 KP(I)='VIS '
05200 193 CALL DPYOUT(I)
05300 CALL SETPOG(1)
05400 140 NP=1
05500 CALL IPOG(NZ)
05600
05700 211 NS=0
05800 120 LV=0
05900 144 CALL SETCUR(NX,NY,LV)
06000 IF(NS)TYPE 6
06100 6 FORMAT(' :'$)
06200 IF(JF.GT.0)TYPE 634
06300 634 FORMAT(' O'$)
06400 ACCEPT 103,M,N
06500 103 FORMAT(2A1)
06600 LX=NX
06700 LY=NY
06800 CALL RDCUR(NX,NY)
06900 IF(NC)GO TO 191
07000 IF(M.NE.' ')GO TO 11
07100 308 IF(LV.NE.0)GO TO 192
07200 301 CALL IPAK(NX,NY,MN,1,NZ)
07300 LV=1
07400 GO TO 144
07500 192 CALL IPAK(NX,NY,MN,-1,NZ)
07600 341 N=NP
07700 278 CALL DPYOUT(N)
07800 KP(N)='VIS '
07900 360 IF(IP)CALL IPOG(NZ)
08000 260 IF(NS)GO TO 144
08100 GO TO 120
08200
08300 11 IF(M.EQ.':')GO TO 261
08400 IF(M.EQ.'.')GO TO 303
08500 IF(M.EQ.'W')GO TO 380
08600 IF(M.EQ.'H')GO TO 306
08700 IF(M.EQ.'V')GO TO 307
08800 IF(M.EQ.'B')GO TO 105
08900 IF(M.EQ.'C')GO TO 150
09000 IF(M.EQ.'+')GO TO 500
09100 IF(M.EQ.'-')GO TO 501
09200 IF(M.EQ.'*')GO TO 502
09300 IF(M.EQ.'J')GO TO 608
09400 IF(M.EQ.'O')GO TO 630
09500 IF(M.EQ.'A')GO TO 510
09600 IF(M.EQ.'E')GO TO 425
09700 IF(M.EQ.'G')GO TO 799
09800 IF(M.EQ.'(')GO TO 431
09900 IF(M.EQ.')')GO TO 432
10000 IF(M.EQ.'I'.OR.M.EQ.'S')GO TO 230
10100 IF(M.EQ.'X')GO TO 104
10200 IF(M.EQ.'Z')GO TO 580
10300 IF(M.EQ.'F')GO TO 601
10400 IF(M.NE.'P')GO TO 260
10500 IP=-1
10600 IF(N.EQ.'I')GO TO 258
10700 IF(N.EQ.'D')GO TO 340
10800 IF(N.NE.' ')GO TO 231
10900 259 NP=NP+1
11000 IF(NP.GT.4)NP=1
11100 251 CALL SETPOG(NP)
11200 GO TO 503
11300 630 IF(JF.GT.0)GO TO 701
11400 REREAD 710,M,JF
11500 710 FORMAT(A1,I2)
11600 IF(JF.LT.1.OR.JF.GT.19.OR.JF.EQ.10)JF=1
11700 GO TO 261
11800 701 JF=0
11900 GO TO 211
12000 303 IF(LV.EQ.0)GO TO 301
12100 CALL IPAK(NX,NY,MN,-1,NZ)
12200 333 KP(NP)='VIS '
12300 IF(IP)CALL IPOG(NZ)
12400 CALL DPYOUT(NP)
12500 NX=LX
12600 NY=LY
12700 IF(.NOT.NC)GO TO 301
12800 NC=0
12900 GO TO 211
13000 601 IT=0
13100 702 IT=IT+1
13200 IF(IT.GT.19)GO TO 708
13300 IF(IT.EQ.10)IT=11
13400 I=0
13500 K=0
13600 602 I=I+1
13700 IF(I.GT.MN)GO TO 660
13800 606 IF(MOD(IMP(I),10).NE.NP)GO TO 602
13900 IF(IMP(I)/10.NE.IT)GO TO 602
14000 K=K+1
14100 CALL INXY(N,M,I)
14200 IF(IT.GT.10)CALL INXY(M,N,I)
14300 A(K)=N*NZ/10
14400 B(K)=M*NZ/10
14500 IB(K)=3
14600 IF(NN(I))IB(K)=2
14700 I=I+1
14800 IF(I.LE.MN)GO TO 606
14900 660 IF(K.LT.3)GO TO 702
15000 IB(1)=K
15100 JI=IT
15200 IF(IT.GT.10)JI=IT-10
15300 IF(IS)JI=JI+5
15400 CALL FILLER(A,B,IB,JI,IS,IT,LD,LS)
15500 GO TO 702
15600 708 IF(IS)GO TO 341
15700 GO TO 689
15800 608 NV=-1
15900 IF(LV.EQ.0)NV=1
16000 CALL IPAK(JX,JY,MN,NV,NZ)
16100 NX=JX
16200 NY=JY
16300 GO TO 341
16400 306 NY=LY
16500 GO TO 308
16600 307 NX=LX
16700 GO TO 308
16800 230 IF(N.EQ.' ')GO TO 258
16900 231 IF(N.LT.'1'.OR.N.GT.'4')GO TO 255
17000 REREAD 408,M,N
17100 408 FORMAT(A1,I1)
17200 IF(M.EQ.'S')GO TO 278
17300 IF(M.NE.'I')GO TO 256
17400 257 KP(N)=' '
17500 CALL HYDPOG(N)
17600 IF(M.EQ.'P')GO TO 259
17700 GO TO 360
17800 255 IF(M.EQ.'P')GO TO 259
17900 258 IF(M.EQ.'S')GO TO 341
18000 N=NP
18100 GO TO 257
18200 256 NP=N
18300 GO TO 251
18400 261 IF(NS)GO TO 211
18500 NS=-1
18600 IF(LV.EQ.1)GO TO 666
18700 JX=NX
18800 JY=NY
18900 GO TO 301
19000 666 JX=LX
19100 JY=LY
19200 GO TO 192
19300 580 IF(IP)GO TO 581
19400 IP=-1
19500 GO TO 360
19600 581 IP=0
19700 N=5
19800 GO TO 257
19900 500 IF(NZ.EQ.20)GO TO 503
20000 NZ=NZ+1
20100 GO TO 503
20200 501 IF(NZ.EQ.5)GO TO 503
20300 NZ=NZ-1
20400 GO TO 503
20500 502 IF(NZ.EQ.10)GO TO 503
20600 NZ=10
20700 503 CALL CLRPOG(NP)
20800 CALL IDRA(MN,NZ)
20900 335 NS=0
21000 GO TO 341
21100 510 REREAD 516,MO,NAM
21200 516 FORMAT(1XA1,A5)
21300 IF(MO.EQ.'G')GO TO 778
21400 IF(.NOT.LOOKD(NAM))GO TO 260
21500 GO TO 515
21600 778 CALL GETFIL(NAM)
21700 CALL FASTIN(IB,2)
21800 MS=IB(2)
21900 CALL GETFIL(NAM)
22000 CALL FASTIN(IB,MS+2)
22100 CALL GETP(IB,NN(MN+1))
22200 DO 777 K=MN+1,MN+MS
22300 I=NP*100000000
22400 IF(NN(K))I=-I
22500 777 NN(K)=NN(K)+I
22600 MN=MN+MS
22700 GO TO 503
22800 340 CALL CLRPOG(NP)
22900 J=0
23000 400 J=J+1
23100 507 IF(J.GT.MN)GO TO 466
23200 MP=MOD(IMP(J),10)
23300 IF(MP.NE.NP)GO TO 400
23400 DO 401 I=J,MN-1
23500 401 NN(I)=NN(I+1)
23600 MN=MN-1
23700 GO TO 507
23800 466 IF(JE)GO TO 467
23900 IP=-1
24000 GO TO 431
24100 105 LP=MOD(IMP(MN),10)
24200 IF(MN.LT.1.OR.LP.NE.NP)GO TO 335
24300 IF(NP.EQ.1)II(2)=II(2)-1
24400 IF(NP.EQ.2)JJ(2)=JJ(2)-1
24500 IF(NP.EQ.3)KK(2)=KK(2)-1
24600 IF(NP.EQ.4)LL(2)=LL(2)-1
24700 CALL ACCPOG(NP)
24800 MN=MN-1
24900 LV=0
25000 IF(NN(MN))LV=1
25100 GO TO 341
25200 150 NC=-1
25300 IF(LV.NE.1)GO TO 301
25400 191 R=0
25500 MN=MN-1
25600 RM=(NX-LX)**2+(NY-LY)**2
25700 RM=SQRT(RM)
25800 KX=LX+RM*SIND(R)
25900 KY=LY+RM*COSD(R)
26000 CALL IPAK(KX,KY,MN,1,NZ)
26100 DO 151 K=6,360,6
26200 R=K
26300 KX=LX+RM*SIND(R)
26400 KY=LY+RM*COSD(R)
26500 151 CALL IPAK(KX,KY,MN,-1,NZ)
26600 GO TO 333
26700 380 IF(LV.NE.1)GO TO 103
26800 REREAD 377,M,N
26900 377 FORMAT(A1,I2)
27000 IF(N.LT.4)N=100
27100 KN=N/10
27200 IF(KN.LT.2)KN=2
27300 DO 381 I=0,N,KN
27400 CALL IPAK(LX-N/2+I,LY-N/2+I,MN,1,NZ)
27500 381 CALL IPAK(NX-N/2+I,NY-N/2+I,MN,-1,NZ)
27600 GO TO 341
27700 799 LX=NX*10/NZ
27800 LY=NY*10/NZ
27900 I=MN
28000 NY=1000
28100 DO 801 K=1,MN
28200 CALL INXY(JX,JY,K)
28300 NX=IABS(JX-LX)+IABS(JY-LY)
28400 IF(NY.LT.NX)GO TO 801
28500 I=K
28600 NY=NX
28700 801 CONTINUE
28800 LF=0
28900 MP=NP
29000 IN=1
29100 GO TO 548
29200 813 IN=-1
29300 I=MN+1
29400 GO TO 426
29500 425 I=0
29600 MP=NP
29700 IF(N.EQ.'E')GO TO 813
29800 IN=1
29900 426 I=I+IN
30000 784 IF(I.GT.MN.OR.I.LT.1)GO TO 804
30100 548 CALL INXY(NX,NY,I)
30200 CALL SETCUR(NX*NZ/10,NY*NZ/10,1)
30300 794 IF(IN)TYPE 815
30400 815 FORMAT(' -'/)
30500 TYPE 469
30600 469 FORMAT(' EDIT?'$)
30700 ACCEPT 103,M,N
30800 IF(M.EQ.' ')GO TO 426
30900 IF(M.EQ.'-')GO TO 810
31000 IF(M.EQ.'+')GO TO 783
31100 IF(M.EQ.'D')GO TO 470
31200 IF(M.EQ.'I')GO TO 547
31300 IF(M.EQ.'O')GO TO 782
31400 IF(M.EQ.'C')GO TO 800
31500 IF(M.EQ.':')GO TO 790
31600 IF(M.EQ.')')GO TO 900
31700 CALL RDCUR(NX,NY)
31800 IF(M.EQ.'M')GO TO 780
31900 IF(M.NE.'B')GO TO 804
32000 I=I-IN
32100 GO TO 548
32200 804 NP=MP
32300 GO TO 211
32400 810 IN=-IN
32500 GO TO 426
32600 900 IF(IN)GO TO 901
32700 IM=I
32800 NF=LF
32900 GO TO 794
33000 901 IM=LF
33100 NF=I
33200 GO TO 794
33300 800 IF(LF.EQ.0.OR.LF.GT.MN)LF=I
33400 NP=MP
33500 DO 806 K=LF,I,IN
33600 CALL INXY(NX,NY,K)
33700 JF=IMP(K)/10
33800 MS=1
33900 IF(NN(K))MS=-1
34000 806 CALL IPAK(NX,NY,MN,MS,10)
34100 814 JF=0
34200 LF=0
34300 GO TO 471
34400 790 LF=I
34500 GO TO 794
34600 780 JF=IMP(I)/10
34700 LF=I
34800 NX=NX*10/NZ
34900 NY=NY*10/NZ
35000 GO TO 786
35100 783 REREAD 377,M,N
35200 I=I+IN*N
35300 GO TO 784
35400 782 REREAD 377,M,JF
35500 IF(JF.OR.JF.EQ.10.OR.JF.GT.19)JF=0
35600 IF(LF.EQ.0.OR.LF.GT.MN)LF=I
35700 796 CALL INXY(NX,NY,LF)
35800 786 MS=1
35900 IF(NN(LF))MS=-1
36000 NP=MOD(IMP(LF),10)
36100 LF=LF-1
36200 CALL IPAK(NX,NY,LF,MS,10)
36300 LF=LF+IN
36400 IF(IN.AND.(LF-I))GO TO 814
36500 IF(.NOT.IN.AND.(I-LF))GO TO 814
36600 GO TO 796
36700 547 NN(I)=-NN(I)
36800 GO TO 471
36900 470 MN=MN-1
37000 DO 428 K=I,MN
37100 428 NN(K)=NN(K+1)
37200 471 CALL CLRPOG(NP)
37300 CALL IDRA(MN,NZ)
37400 CALL DPYOUT(NP)
37500 GO TO 784
37600 431 NX=0
37700 NY=0
37800 NF=MN+1
37900 IM=0
38000 GO TO 211
38100 432 IF(IM.EQ.0)IM=MN
38200 DO 433 I=NF,IM
38300 JF=IMP(I)/10
38400 CALL INXY(IX,IY,I)
38500 IX=NX+IX
38600 IY=NY+IY
38700 MP=1
38800 IF(NN(I))MP=-1
38900 433 CALL IPAK(IX,IY,MN,MP,NZ)
39000 JF=0
39100 GO TO 341
39200
39300 104 CALL CLRCUR
39400 CALL IPOG(NZ)
39500 IP=-1
39600 TYPE 111
39700 111 FORMAT(' TYPE:<CR>;TO CONTINUE.'/' TYPE:''N''<CR>;TO START OVER.'/
39800 2' TYPE:''X'' TO SAVE VIS POGS IF FINISHED'/
39900 3' OR TYPE:''P'' TO PLOT ALL VIS POGS'/)
40000 ACCEPT 103,M,NV
40100 IF(M.EQ.'N')GO TO 1
40200 IF(M.EQ.'P')GO TO 557
40300 IF(M.NE.'X')GO TO 120
40400 127 TYPE 121
40500 121 FORMAT(' TYPE A FIVE LETTER NAME FOR THIS PICTURE.'/)
40600 ACCEPT 3,NAM
40700 IF(NAM.EQ.' ')GO TO 127
40800 557 MP=0
40900 DO 405 IK=1,4
41000 IF(KP(IK).NE.'VIS ')GO TO 405
41100 MP=MP+1
41200 405 CONTINUE
41300 IF(MP.EQ.0)GO TO 104
41400 IF(M.EQ.'P')GO TO 555
41500 NP=0
41600 JE=-1
41700 467 NP=NP+1
41800 IF(NP.GT.4)GO TO 468
41900 IF(KP(NP).NE.'VIS ')GO TO 340
42000 GO TO 467
42100 468 CALL OFILE(1,NAM)
42200 WRITE(1)MN,(NN(K),K=1,MN)
42300 END FILE 1
42400 GO TO 1
42500 555 TYPE 587
42600 587 FORMAT(/' PLOTING CURRENT POG'/)
42700 CALL PLOTS(I)
42800 IF(NV.EQ.'L')GO TO 797
42900 IF(NV.EQ.'S')GO TO 850
43000 IF(NV.NE.'D'.AND.NV.NE.'B')GO TO 851
43100 LD=-1
43200 850 LS=-1
43300 851 IS=0
43400 GO TO 601
43500 689 IF(NV.EQ.'S'.OR.NV.EQ.'D'.OR.NV.EQ.'Z')GO TO 711
43600 797 DO 556 I=1,MN
43700 IF(MOD(IMP(I),10).NE.NP)GO TO 556
43800 CALL INXY(NX,NY,I)
43900 MO=3
44000 IF(NN(I))MO=2
44100 CALL PLOT(NX*NZ/10,NY*NZ/10,MO)
44200 556 CONTINUE
44300 711 CALL PLOT(0,0,3)
44400 TYPE 691
44500 691 FORMAT(' FINISHED PLOTING!'/)
44600 IS=-1
44700 LS=0
44800 LD=0
44900 GO TO 211
45000 END
45100
45200 SUBROUTINE IPOG(NZ)
45300 COMMON KP(5),NP,NN(4096),JF
45400 DIMENSION MM(24),JP(4)
45500 CALL DPYSET(5,MM,24)
45600 CALL DPYTXT(100,-430,'POG1 POG2 POG3 POG4 ZOOM ',5)
45700 KP(5)=' REG '
45800 IF(NZ.LT.10)KP(5)=' --- '
45900 IF(NZ.GT.10)KP(5)=' +++ '
46000 CALL DPYTXT(100,-450,KP,5)
46100 DO 4 J=1,4
46200 JP(J)=' '
46300 4 IF(J.EQ.NP)JP(J)=' ↑↑ '
46400 CALL DPYTXT(100,-470,JP,4)
46500 CALL DPYOUT(5)
46600 CALL SETPOG(NP)
46700 RETURN
46800 END
46900 SUBROUTINE IPAK(NX,NY,MN,MP,NZ)
47000 COMMON KP(5),NP,NN(4096),JF
47100 MN=MN+1
47200 IX=(NX*10/NZ)+1024
47300 IY=(NY*10/NZ)+1024
47400 NN(MN)=MP*((JF*10+NP)*100000000+IX*10000+IY)
47500 CALL IPEN(NX,NY,MP,10)
47600 RETURN
47700 END
47800 SUBROUTINE IPEN(NX,NY,MP,NZ)
47900 IX=NX*NZ/10
48000 IF(IX.GT.950)IX=950
48100 IF(IX.LT.-950)IX=-950
48200 IY=NY*NZ/10
48300 IF(IY.GT.950)IY=950
48400 IF(IY.LT.-950)IY=-950
48500 IF(MP)GO TO 1
48600 CALL AIVECT(IX,IY)
48700 RETURN
48800 1 CALL AVECT(IX,IY)
48900 RETURN
49000 END
49100 SUBROUTINE INXY(NX,NY,MN)
49200 COMMON KP(5),NP,NN(4096),JF
49300 J=IABS(NN(MN))
49400 NY=MOD(J,10000)-1024
49500 NX=(MOD(J,100000000)/10000)-1024
49600 RETURN
49700 END
49800 SUBROUTINE IDRA(MN,NZ)
49900 COMMON KP(5),NP,NN(4096),JF
50000 DO 1 I=1,MN
50100 KF=MOD(IABS(NN(I)/100000000),10)
50200 IF(KF.NE.NP)GO TO 1
50300 CALL INXY(IX,IY,I)
50400 CALL IPEN(IX,IY,NN(I),NZ)
50500 1 CONTINUE
50600 RETURN
50700 END